<?php
/**
 * HaB
 *
 * Gestor de contenidos de alta disponibilidad
 *
 * @package		HaB
 * @author		Oscar M. Lage <r0sk10@gmail.com>
 * @author		Marcos B.L. <marcosbl@gmail.com>
 * @version		1.0
 */

/**
 * functions.php
 *
 * Colección de funciones del módulo "blog"
 *
 * @package		HaB
 * @version		1.0
 */

/**
 * Despachador de URLs
 */
function despacha_mod($modulo)
{
	$request = ltrim($_SERVER['REQUEST_URI'], '/');
	$vars = explode('/', $request);
	
	// Eliminamos vacíos
	$request = array();
	foreach ($vars as $var)
		if($var!='')
			array_push($request, $var);
			
	$accion =""; $id=""; $page=""; $lang="";
	foreach ($vars as $var => $key)
	{
		// Categoria
		if(preg_match('/cat-[a-z]*$/', $key, $coincidencias))
		{
			$r = explode('-', $coincidencias[0]);
			$accion = $r[0];
			$id = $r[1];
		}
		// Tag
		if(preg_match('/tag-[a-z]*$/', $key, $coincidencias))
		{
			$r = explode('-', $coincidencias[0]);
			$accion = $r[0];
			$id = $r[1];
		}
		// Page
		if(preg_match('/page-[0-9]*$/', $key, $coincidencias))
		{
			$r = explode('-', $coincidencias[0]);
			$page = $r[1];
		}
		// Idioma
		if(preg_match('/lang-[a-z]*$/', $key, $coincidencias))
		{
			$r = explode('-', $coincidencias[0]);
			if(file_exists(DIR_MODULES . $modulo . '/lang/' . $r[1]))
				$lang = $r[1];
			else
				$lang = LANGUAGE;
		}
		// Posts (solo letras minúsculas, numeros "-" y "_").
		if(
			preg_match('/^[a-z0-9_-]*.html$/', $key, $coincidencias) OR
			preg_match('/^[a-z0-9_-]*.php$/',  $key, $coincidencias)
		  )
		{
			$r = explode('.', $coincidencias[0]);
			$accion = 'post';
			$id = $r[0];
		}

		// Posts (compatibilidad hacia atras: "post.123.php", "noticia.123.php").
		if(
			preg_match('/^noticia\.[0-9]*\.html$/', $key, $coincidencias) OR
			preg_match('/^noticia\.[0-9]*\.php$/', $key, $coincidencias) OR
			preg_match('/^post\.[0-9]*\.html$/', $key, $coincidencias) OR
			preg_match('/^post\.[0-9]*\.php$/', $key, $coincidencias)
		  )
		{
			$r = explode('.', $coincidencias[0]);
			$accion = 'post';
			$id = $r[1];
		}
	}
	
	if(!isset($page) OR $page=='') $page=0;
	if(!isset($accion) OR $accion=='') $accion='index';
	return array('accion' => $accion, 'id' => $id, 'page' => $page, 'lang' => $lang);
}

?>